package com.r.pan.utils;

import com.r.pan.config.AppConfig;
import com.r.pan.constant.Constants;
import com.r.pan.entity.dto.SpaceInfoDTO;
import com.r.pan.entity.dto.SysSettingDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

@Slf4j
@Component
public class RedisUtils {
    @Resource
    private RedisOperations redisOperations;
    @Resource
    private AppConfig appConfig;

    /**
     * 从redis中获取系统设置，不存在则使用配置文件中的默认值创建系统设置对象并保存到redis，返回系统设置对象
     * @return 系统设置对象
     */
    public SysSettingDTO getSysSetting() {
        SysSettingDTO sysSettingDTO = (SysSettingDTO) redisOperations.get(Constants.REDIS_KEY__SYSTEM_SETTING);
        if (sysSettingDTO == null) {
            sysSettingDTO = BeanUtils.copyBean(appConfig, SysSettingDTO.class);
            redisOperations.set(Constants.REDIS_KEY__SYSTEM_SETTING, sysSettingDTO);
        }
        return sysSettingDTO;
    }

    /**
     * 保存用户的空间使用信息
     * @param userId 用户id
     * @param spaceInfoDTO 用户空间使用信息
     */
    public void setSpaceInfo(String userId, SpaceInfoDTO spaceInfoDTO) {
        // 设置一天过期时间
        redisOperations.setEx(Constants.REDIS_KEY__SPACE_INFO + userId, spaceInfoDTO, Constants.SPIRES__SPACE_INFO, TimeUnit.SECONDS);
    }
}
